#ifndef GameState_H
#define GameState_H


#include <OIS.h>


namespace OIS
{
	class KeyEvent;
	class MouseEvent;
	enum MouseButtonID;
}



class GameState
{
public:
	virtual void enter() = 0;
	virtual void exit() = 0;

	virtual void pause() = 0;
	virtual void resume() = 0;

	virtual void keyPressed( const OIS::KeyEvent &e )  = 0;
	virtual void keyReleased( const OIS::KeyEvent &e ) = 0;

	virtual void mouseMoved( const OIS::MouseEvent &e ) = 0;
	virtual void mousePressed( const OIS::MouseEvent &e, OIS::MouseButtonID id )  = 0;
	virtual void mouseReleased( const OIS::MouseEvent &e, OIS::MouseButtonID id ) = 0;

	virtual void frameStarted(float) = 0;
	virtual void frameEnded(float) = 0;
	
protected:
	GameState() { }
};

#endif